const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
// 这里应当引入你的用户模型
const User = require('../models/user');

passport.use(new LocalStrategy(
    (username, password, done) => {
        User.findOne({ username: username }, (err, user) => {
            if (err) { return done(err); }
            if (!user) { return done(null, false); }
            // 你需要一个方法来验证密码是否匹配
            if (!verifyPassword(password, user.password)) { return done(null, false); }
            return done(null, user);
        });
    }
));

// 根据用户的id序列化用户
passport.serializeUser((user, done) => done(null, user.id));

// 反序列化用户
passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done(err, user);
    });
});

function verifyPassword(inputPassword, storedPassword) {
    // 这里应当引入bcrypt来验证散列密码
}
